Streaming media relates to constant delivery of media by a provider, to be received by an end unit and presented to an end-user.
Streaming may be used for any type of information such as data, audio or video, and content such as music, movies, games, closed captioning, stock ticker, real-time text, medical operations, or any other data to be streamed or broadcast. Common environments or applications of streaming media include but are not limited to interactive television information systems such as video on-demand (VoD) providing pre-ready contents or games, and internet television.
Streaming media has become more and more popular due to a number of reasons, including the increased network bandwidth, especially in the last mile, increased access to and commercialization of networks, especially the Internet, and the use of standard protocols and formats, such as TCP/IP, HTTP, and HTML.
A media stream can be streamed either live or on-demand. Live streams are generally provided by a means called “true streaming”, which sends the information without saving the file to a hard disk. On-demand streaming may be provided by a means called progressive streaming or progressive download, which saves the file to a hard disk and then plays it from that location. On-demand streams may be saved to hard disks and servers for extended amounts of time, while the live streams are only generated and available at one time e.g., during an interactive game, a broadcast game or others.
An architecture for live or on-demand services in systems such as but not limited to cable television (CATV) systems may include a plurality of sources, such as files, game servers or others which retrieve or render a sequence of frames; optionally one or more encryption engines, for encrypting the streamed frames; and one or more edge devices, each of which packetizes sub-sets of input streams into a multi program/service transport stream (MPTS) format, modulates each MPTS through a quadrature amplitude modulation (QAM), and transmits the radio frequency (RF) modulated signal to the set top box at the client's premises.
In order to save transmission time, the data may be compressed prior to sending, and decompressed by the client device. The selected type of compression and streaming may be based on the types of the data, the clients and the communication channels.
For example, audio streams may be compressed using an audio codec such as MP3, Vorbis or AAC, while video streams may be compressed using a video codec such as H.264/MPEG-4 or VP8. The stream may be delivered from a streaming server to a streaming client using a transport protocol, such as MMS or RTP. The streaming client may interact with the streaming server using a control protocol, such as MMS or RTSP.
Traditionally, transmitting TV services over IP networks is considered less reliable then transmission over cable network. The reliability of the TV service may be measured by several factors, including but not limited to jitter, delay and packet losses, which may be measured by quantity and/or frequency.
It will be appreciated that the loss of even a single packet, or a corruption of a frame or a part thereof may have large impact on the video quality at the client or subscriber side, for example at the set top box (STB). For example, when H.264/MPEG-4 compression is used, a frame may be expressed relatively to a previous frame, e.g., indicating only the changes from the previous frame. Thus, if a frame is lost, subsequent frames may be useless as well.
Overcoming data loss Transmitting TV services over IP networks in the problems may be performed using a number of approaches.
A preventive approach relates to hardening the video data to embed built-in resiliency to loss of data. For example, ES techniques of H264 standard, may include any one or more of the following: Random and RD control intra refresh (only random is currently supported); mMinimizing/optimizing splice size; Randomizing order of MB transmission; dData partitioning (grouping the data for transmission according to importance for stream correctness); redundant slices; and bitstream switching. In another example, in ProMPEG standard forward error correction (FEC) may be performed. However, such methods have significant drawbacks in terms of transmission volume and optimization options.